package com.zyx.io;

import java.io.*;

public class Test01 {
    public static void main(String[] args) {
        test01();
        test02();
        test03();
    }

    /*缓冲流*/
    public static void test03() {
        try(BufferedReader is = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("F:\\IO.txt")));
            BufferedWriter os = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream("F:\\IO3.txt")));)
        {
            //信息读取一整行
            String strMsg= is.readLine();
            //内容不为空继续读取，直到内容为空
           while (strMsg!=null){
            //将读入的文件内容写入文件
            os.write(strMsg);
            //换行
            os.newLine();
            os.write("\n");
            System.out.println("ok");
            //继续读
            strMsg=is.readLine();
        }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*
     * 字符流
     * 使用输入流读取一个文件内容到cpu中
     * 在使用输出流将内容读取到指定的外部文件中
     * */
    public static void test02() {
        //创建输入输出流对象（在最后的时候需要关闭）
        //第二个参数默认是false：从头开始覆盖；true就是不覆盖，从末尾继续写
        try(Reader fr = new FileReader("F:\\IO.txt");
            Writer fw = new FileWriter("F:\\IO2.txt",true);)
        {
            //用于读取字节流的字节数组
            char[] bs = new char[1024];
            //将输入流中的内容读取到字节数组中
            int length = fr.read(bs,0,1024);
            while (length  != -1) {
                //输出流将字节数组中的内容复制
                fw.write(bs, 0, length);
                System.out.println("ok");
                length=fr.read(bs);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /*
    * 字节流
    * 使用输入流读取一个文件内容到cpu中
    * 在使用输出流将内容读取到指定的外部文件中
    * */
    public static void test01() {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            //创建输入输出流对象（在最后的时候需要关闭）
            fis = new FileInputStream("F:\\IO.txt");
            fos = new FileOutputStream("F:\\IO1.txt");
            //用于读取字节流的字节数组
            byte[] bs = new byte[1024];
            //将输入流中的内容读取到字节数组中
            int length = fis.read(bs,0,1024);
            while (length  != -1) {
                //输出流将字节数组中的内容复制
                fos.write(bs, 0, length);
                System.out.println("ok");
                length=fis.read(bs);
            }

            //String s = "i ove java";
			//byte[] b = s.getBytes();
			//fos.write(b, 0, b.length);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fis!=null){
                    fis.close();
                }
                if(fos!=null){
                    fos.close();
                }
            } catch (IOException e) {
               // e.printStackTrace();
                System.out.println("连接超时，请稍后再试...");
            }

        }
    }
}
